package ln.javatest.day12.demo01;
/*
可变参数：是JDk1.5之后出现的新特性
使用前提：
    当方法的参数列表数据类型已经确定，但是参数的个数不确定，就可以使用可变参数
使用格式：定义方法时使用
    修饰符 返回值类型 方法名（数据类型...变量名）{}
可变参数的原理：
    可变参数底层就是一个数组，根据传递参数个数不同，会创建不同长度的数组
    来存储这些参数传递的参数个数，可以是0个（不传递）,1,2...多个
*/

public class Demo01VarArgs {
    public static void main(String[] args) {
        int i = add(10,20);
        System.out.println(i);
    }
    /*
    可变参数的注意事项：
        1.一个方法的参数列表，只能有一个可变参数
        错误写法：private static int add(int...i,String...s){}
        2.如果方法的参数有多个，那么可变参数必须写在参数列表的末尾
        错误写法：private static int add(int...arr，String s,double d){}
        正确写法：private static int add(String s,double d,int...arr){}
    */

    private static int add(int...arr) {
        System.out.println(arr); //输出时一个地址，因为底层是一个数组
        System.out.println(arr.length); //2
        int sum = 0;
        for (int i : arr) {
            sum += i;
        }
        return sum;
    }

}
